[求助]关于51单片机蜂鸣器的驱动

来源:百度知道 编辑:UC知道 时间:2024/05/22 01:41:30
小菜鸟刚学单片机,有问题解决不了,希望好心人帮忙下。

想用蜂鸣器做一个报警电路,可是一直不会响 C语言程序如下:

if(temp_val.f>40) //指温度大于40的时候,P2_3置0,反之置1;PROTEUS上仿真时候,采集温度大于40的时候,P2_3低电平,小于40,高电平,这个事正确的
{P2_3=0;
delay_n10us(10);

}
else
P2_3=1;
}

PROTEUS上图如下 ,用的都是最常见的元器件(电压表不是的,放着测测的,单片机出来电压5的样子,蜂鸣器两端电压1点多V,不知道是不是正常的)
第一个图片如http://i3.6.cn/cvbnm/e4/f0/76/4b8a2e7ff306e81e1b45660c9ce0793d.jpg

后面我换我换了个喇叭,直接连单片机管脚,改了下程序可以响了,可是我还是想弄懂第一种的方法我为什么错~~(做人比较顽固、、)

加了以下程序:

sbit SPK=P2^3;//定义蜂鸣器端口
void beep()
{
uint i;
for(i=0;i<2000;i++)//喇叭发声的时间循环,改变大小可以改变发声时间长短
{
delay_n10us(10);//参数决定发声的频率,估算值
SPK=!SPK;
}
SPK=1;

用PNP和NPN都可以的,但是最好用PNP,如你第一幅图把三极管上下换一下就行了。

需要注意的是一般单片机做控制类,比如蜂鸣器等,肯定要加一级驱动或者隔离之类的,还有单片机一上电后引脚全是高电平的(如果控制的是机器人那么启动后机器人肯定会剧烈抖动一下),所以一般用低电平作为控制有效信号,另外单片机和控制器件之间要串一个2K多电阻隔离,其他的上面已经很清楚

你好,首先蜂鸣器分为两种,有源蜂鸣器和无源蜂鸣器,不知道你用的是哪种。有源蜂鸣器只要两端的电压达到它所需的工作电压即可鸣叫。我用的是5v有源蜂鸣器,但3.8v的时候一样能工作,一般来讲可以用三极管做模拟开关,选定一个I/O口来驱动三极管的导通与截止。
电路接法:三极管选定PNP型,基级b连接一个10k欧左右的电阻后接I/O口,发射极e连接5v左右(据蜂鸣器的工作电压而定)电压,集电极c连接蜂鸣器后接地。单片机在复位后的各I/O口是高电平,此时三极管是截止的,编写程序使选定的I/O为低电平,此时三极管导通,导通后蜂鸣器与电源正极连通,构成一个工作回路,便可鸣叫。

1 2 3 楼说的是对的。听他们的就行,看看NPN的接法

三极管用NPN

请用npn的三极管!